package com.hzlh.core.service;


import org.springframework.web.multipart.MultipartFile;

import com.hzlh.core.domain.UploadedFile;


/**
 * 上传服务接口
 * <p>
 *
 */

public interface UploadService {
	/**
	 * 上传目录子目录
	 */
	public String UPLAOD_PATH = "/upload";

	/**
	 * 上传临时目录子目录
	 */
	public String UPLAOD_TEMP = "/temptemptemp";


	/**
	 * 上传到正式目录
	 * <p>
	 *
	 * @param uploadFirstSubDir
	 *            上传的第一层子目录
	 * @param mfile
	 * @return
	 */
	public UploadedFile uploadFileToUploadDir(String uploadFirstSubDir, MultipartFile mfile);

	/**
	 * 上传到临时目录
	 * <p>
	 *
	 * @param mfile
	 * @return
	 */
	public UploadedFile uploadFileTempDir(MultipartFile mfile);

	/**
	 * 获取上传文件的临时根目录
	 * <p>
	 *
	 * @return
	 */
	public String getUploadTempRootDir();

	/**
	 * 获取上传文件的根目录
	 * <p>
	 *
	 * @return
	 */
	public String getUploadRootDir();

	/**
	 * 获取上传文件的服务器url
	 * @return
	 */
	public String getUploadUrl();

	/**
	 * 获取上传临时文件的服务器地址
	 * @return
	 */
	public String getUploadTempUrl();

	/**
	 * 删除文件
	 * <p>
	 * @param url
	 * @return
	 */
	public boolean deleteFile(String fileReadPath);

	/**
	 * 将临时文件路径转换成正式文件路径，即用newPathPart取替换临时文件路径的开头部分
	 * @param tempPath 临时文件的路径
	 * @param newPathPart 正式文件的开始部分路径
	 * @return
	 */
	public String convertTempPathToUploadPath(String tempPath,String newPathPart);

	/**
	 * 压缩图片
	 * 示例：传入 /d/a.jpg, 100, 75     生成 /d/a-100X75.jpg
	 *
	 * @param origUrl
	 * 				原始图片url，不能传空
	 * @param width
	 * 				宽度，必须大于0
	 * @param height
	 * 				高度，必须大于0
	 * @return		压缩后图片的相对url
	 */
	public String buildImage(String origUrl, int width, int height);
}
